package com.demo.model.dto;

import com.demo.function.spring.validator.IsMobile;
import jakarta.validation.Valid;
import jakarta.validation.constraints.AssertFalse;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单实体
 * @author K
 */
@Accessors(chain = true)
@Data
public class OrderHeader {

    private Long orderId;

    @NotBlank(message = "订单号不能为空")
    private String orderSn;

    private String address;

    /**
     * 购买日期
      */
    private Date dateOfPurchase;
    private BigDecimal price;
    /**
     * 固话
      */
    private String tel;
    /**
     * 手机
     * 不是必填，但是有值就会校验
      */
    @IsMobile(required = false)
    private String mobileTel;

    @Valid
    private List<OrderDetail> detail;

    /**
     * 使用@AssertFalse注解，方法命名必须isValid
     * @return 返回校验结果boolean类型
     */
    @AssertFalse(message = "tel,mobile字段不能同时为空")
    private boolean isValid() {
        return StringUtils.isAllBlank(tel, mobileTel);
    }
}
